﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using SCP_UNA_MVC.Libs;
using SCP_UNA_MVC.Models;

namespace SCP_UNA_MVC.Controllers
{
    public class LoginController : Controller
    {
        //
        // GET: /Login/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Logout()
        {
            Session["PassPort"] = null;
            Session["usuario_logado"] = null;
            Session["produto_id"] = null;
            Session["id_usuario"] = null;
            return Json(new { success = true }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult Autenticacao(FormCollection collection)
        {
            bool sucesso = false;
            string mensagem = string.Empty;
            
            try
            {
                using (SCP_DataDataContext dt = new SCP_DataDataContext())
                {
                    string senhasegura = PasswordHasher.Hash(collection["senha"]);
                    Cliente cli = dt.Clientes.Where(c => c.login == collection["usuario"] && c.senha == senhasegura).SingleOrDefault();

                    if (cli != null)
                    {
                        Passport passport = new Passport() { Id = cli.id };

                        passport.Login = cli.login;
                        passport.Nome = cli.nome;
                        passport.Email = cli.email;

                        Session["PassPort"] = passport;

                        Session["usuario_logado"] = passport.Nome;

                        Session["id_usuario"] = cli.id;

                        sucesso = true;

                        return Json(new { sucesso = sucesso, mensagem = mensagem, usuario = passport.Nome });
                    }
                    else
                    {
                        mensagem = "Usuário e/ou senha inválidos.";
                        return Json(new { sucesso = false, mensagem = mensagem });
                    }
                }
            }
            catch (System.Data.SqlClient.SqlException sqlExp)
            {
                sucesso = false;
                mensagem = "Falha de conexão com o banco de dados.\n\n" + sqlExp.Message;

                return Json(new { sucesso = sucesso, mensagem = mensagem });
            }
            catch (SystemException e)
            {
                sucesso = false;
                mensagem = "Erro no sistema.\n\n" + e.Message;

                return Json(new { sucesso = sucesso, mensagem = mensagem });
            }
        }
    }
}
